#include <stdio.h> требуется только для объявления функций. long lseek (stream, offset, origin); int handle; handle, ссылающийся на открытый файл long offset; число байтов из origin. int оrigin; начальная позиция.
Описание.
Функция lseek передвигает указатель на файл (если он есть), связанный с handle , на новое место расположения, которое является байтами offset из origin .
Следующая операция в файле выполняется на новом месте расположения.
Аргумент origin может быть одной из следующих констант, определенных в <stdio.h>.
ORIGIN ОПРЕДЕЛЕНИЕ SEEK-SET начало файла. SEEK-CUR текущая позиция указателя на файл. SEEK-END конец файла.
Функция lseek используется для перемещения указателя в любое место файла. Указатель должен быть размещен вне конца файла. Однако попытка расположить указатель на файл в начале файла обычно приводит к ошибке.
Возвращаемое значение.
Функция lseek возвращает разветвление origin в байтах, оп ределенное как значение от новой позиции до начала файла. Возвращаемое значение -1 указывает на ошибку; errno устанавливается в одно из следующих значений:
ВЕЛИЧИНА ЕЕ СМЫСЛОВОЕ ЗНАЧЕНИЕ EBADF Неверный handle-р файла. ENIVAL Неверное значение для origin или позиция, определенная при помощи offset, находится перед началом файла.
Для устройств, не приспособленных для поиска (seek ), (таких как терминал и печать), возвращаемое значение неопределенно.
Пример:
#include <io.h> #include <fcntl.h> #include <stdlib.h> int fh; long position; fh = open("data", O_RDONLY); . . . /* 0 - разветвление от начала */ position = lseek (fh, 0L, SEEK_SET); if (position == -1L) perror("lseek to beginning failed"); . . . /* находит текущую позицию */ position = lseek (fh, 0L, SEEK_CUR); if (position == -1L) perror("lseek to current position failed"); . . . /* выполняет до конца файла */ if (position == -1L) perror("lseek to end failed");.